package com.ng.common.utils;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

/**
 * @author cb
 * @Description TODO
 * @date 2023/12/18
 */
public class PDFUtils {

    public static void GeneratedPDFIMG() {
        String path = "E:\\原文\\需要导入的";
        File pdfFilefolder = new File("E:\\原文\\需要导入的");
        File[] listOfFiles = pdfFilefolder.listFiles();
        for (int i = 0; i < listOfFiles.length; i++) {
            if (listOfFiles[i].isFile()) {
                System.out.println("File " + listOfFiles[i].getName());
                String tmpPath = path+"\\coverpdf\\";
                String imageName = listOfFiles[i].getName().substring(0,listOfFiles[i].getName().lastIndexOf(".")) + ".png";
                File imgFile = new File(tmpPath, imageName);
                PDDocument pd = null;
                try {
                    // 加载pdf文件
                    pd = PDDocument.load(listOfFiles[i]);
                    // 准备pdf文件渲染对象
                    PDFRenderer pdfRenderer = new PDFRenderer(pd);
                    // 创建图片文件
                    if (!imgFile.exists()) {
                        imgFile.createNewFile();
                    }
                    // 判断pdf页数
                    if (pd.getNumberOfPages() > 0) {
                        // 设置页数（首页从0开始）、每英寸点数、图片类型
                        BufferedImage bim = pdfRenderer.renderImageWithDPI(0, 96, ImageType.RGB);
                        // 将图片写入到图片对象中
                        ImageIO.write(bim, "png", imgFile);
                        // 设置图片保存地址和图片名称
                        System.out.println("图片保存位置：" + tmpPath + imageName);

                    }
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    try {
                        if (pd != null) {
                            pd.close();
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }



        }
    }
}
